home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / amiga / opalvisn / amosopal.lha / Opal.s < prev    next >
Text File  |  1992-11-25  |  21KB  |  1,004 lines

  1. ; AMOS Extension for OpalVision support.
  2. ; (C) 1992 Opal Technology PTY LTD.
  3. ;
  4. ; Written By Martin Boyd.
  5.  
  6.  
  7.     opt C-
  8.  
  9. ExtNb        EQU    21-1    ;NOTE: Extension number is 21.
  10.  
  11.     incdir "asm:include/"
  12.      Include    "_Equ.s"    ;These files are included with AMOS.
  13.     RsSet    DataLong
  14.     Include "_Pointe.s"
  15.     Include "_CEqu.s"
  16.     Include    "_WEqu.s"
  17.     Include    "_LEqu.s"
  18.  
  19.     include "exec/types.i"
  20.     include "exec/exec_lib.i"
  21.     include "opal/opallib.i"
  22. ;    include "graphics/gfxbase.i"
  23.  
  24.  
  25. ;from gfxbase.i
  26.  
  27.     IFND    EXEC_LISTS_I
  28.     include 'exec/lists.i'
  29.     ENDC
  30.     IFND    EXEC_LIBRARIES_I
  31.     include 'exec/libraries.i'
  32.     ENDC
  33.     IFND    EXEC_INTERRUPTS_I
  34.     include 'exec/interrupts.i'
  35.     ENDC
  36.  
  37.  STRUCTURE  GfxBase,LIB_SIZE
  38.     APTR    gb_ActiView     ; struct *View
  39.     APTR    gb_copinit        ; struct *copinit; ptr to copper start up list
  40.     APTR    gb_cia    ; for 6526 resource use
  41.     APTR    gb_blitter        ; for blitter resource use
  42.     APTR    gb_LOFlist        ; current copper list being run
  43.     APTR    gb_SHFlist        ; current copper list being run
  44.     APTR    gb_blthd        ; struct *bltnode
  45.     APTR    gb_blttl        ;
  46.     APTR    gb_bsblthd        ;
  47.     APTR    gb_bsblttl        ;
  48.     STRUCT  gb_vbsrv,IS_SIZE
  49.     STRUCT  gb_timsrv,IS_SIZE
  50.     STRUCT  gb_bltsrv,IS_SIZE
  51.     STRUCT  gb_TextFonts,LH_SIZE
  52.     APTR    gb_DefaultFont
  53.     UWORD   gb_Modes        ; copy of bltcon0
  54.     BYTE    gb_VBlank
  55.     BYTE    gb_Debug
  56.     UWORD   gb_BeamSync
  57.     WORD    gb_system_bplcon0
  58.     BYTE    gb_SpriteReserved
  59.     BYTE    gb_bytereserved
  60.  
  61.     WORD    gb_Flags
  62.     WORD    gb_BlitLock
  63.     WORD    gb_BlitNest
  64.     STRUCT    gb_BlitWaitQ,LH_SIZE
  65.     APTR    gb_BlitOwner
  66.     STRUCT    gb_TOF_WaitQ,LH_SIZE
  67.  
  68.     WORD    gb_DisplayFlags
  69.     APTR    gb_SimpleSprites
  70.     WORD    gb_MaxDisplayRow
  71.     WORD    gb_MaxDisplayColumn
  72.     WORD    gb_NormalDisplayRows
  73.     WORD    gb_NormalDisplayColumns
  74.     WORD    gb_NormalDPMX
  75.     WORD    gb_NormalDPMY
  76.  
  77.     APTR    gb_LastChanceMemory
  78.     APTR    gb_LCMptr
  79.  
  80.     WORD    gb_MicrosPerLine    ; usecs per line times 256
  81.     WORD    gb_MinDisplayColumn
  82.  
  83.     UBYTE    gb_ChipRevBits0        ; agnus/denise new features
  84.     STRUCT    gb_crb_reserved,5
  85.  
  86.     STRUCT    gb_monitor_id,2    ; normally null
  87.     STRUCT    gb_hedley,4*8
  88.     STRUCT    gb_hedley_sprites,4*8
  89.     STRUCT    gb_hedley_sprites1,4*8
  90.     WORD    gb_hedley_count
  91.     WORD    gb_hedley_flags
  92.     WORD    gb_hedley_tmp
  93.     APTR    gb_hash_table
  94.     UWORD    gb_current_tot_rows
  95.     UWORD    gb_current_tot_cclks
  96.     UBYTE    gb_hedley_hint
  97.     UBYTE    gb_hedley_hint2
  98.     STRUCT    gb_nreserved,4*4
  99.     APTR    gb_a2024_sync_raster
  100.     WORD    gb_control_delta_pal
  101.     WORD    gb_control_delta_ntsc
  102.     APTR    gb_current_monitor
  103.     STRUCT    gb_MonitorList,LH_SIZE
  104.     APTR    gb_default_monitor
  105.     APTR    gb_MonitorListSemaphore
  106.     APTR    gb_DisplayInfoDataBase
  107.     APTR    gb_ActiViewCprSemaphore
  108.     APTR    gb_UtilityBase
  109.     APTR    gb_ExecBase
  110.     LABEL   gb_SIZE
  111.  
  112.  
  113. OPALBASE    EQU    0
  114.  
  115.  
  116.  
  117. A_CALLOPAL    MACRO
  118.         move.l    A6,-(SP)
  119.         move.l    ExtAdr+ExtNb*16(a5),A6
  120.         move.l    (A6),A6
  121.         jsr    _LVO\1(a6)
  122.         move.l    (SP)+,A6
  123.         move.l    D0,D3
  124.         moveq    #0,D2
  125.         ENDM
  126.  
  127.  
  128.  
  129. Start    dc.l    C_Tk-C_Off    ;Pointer to the token list
  130.     dc.l    C_Lib-C_Tk    ;Pointer to the first library function
  131.     dc.l    C_Title-C_Lib    ;Pointer to the title
  132.     dc.l    C_End-C_Title    ;From title to the end of the program
  133.     dc.w    0    
  134.  
  135. ******************************************************************
  136. *    Offset to functions
  137.  
  138. C_Off    dc.w (L1-L0)/2,(L2-L1)/2,(L3-L2)/2,(L4-L3)/2,(L5-L4)/2,(L6-L5)/2
  139.     dc.w (L7-L6)/2,(L8-L7)/2,(L9-L8)/2,(L10-L9)/2,(L11-L10)/2,(L12-L11)/2
  140.     dc.w (L13-L12)/2,(L14-L13)/2,(L15-L14)/2,(L16-L15)/2,(L17-L16)/2,(L18-L17)/2
  141.     dc.w (L19-L18)/2,(L20-L19)/2,(L21-L20)/2,(L22-L21)/2,(L23-L22)/2,(L24-L23)/2
  142.     dc.w (L25-L24)/2,(L26-L25)/2,(L27-L26)/2,(L28-L27)/2,(L29-L28)/2,(L30-L29)/2
  143.     dc.w (L31-L30)/2,(L32-L31)/2,(L33-L32)/2,(L34-L33)/2,(L35-L34)/2,(L36-L35)/2
  144.     dc.w (L37-L36)/2,(L38-L37)/2,(L39-L38)/2,(L40-L39)/2,(L41-L40)/2,(L42-L41)/2
  145.     dc.w (L43-L42)/2,(L44-L43)/2,(L45-L44)/2,(L46-L45)/2,(L47-L46)/2,(L48-L47)/2
  146.     dc.w (L49-L48)/2,(L50-L49)/2,(L51-L50)/2,(L52-L51)/2,(L53-L52)/2,(L54-L53)/2
  147.     dc.w (L55-L54)/2,(L56-L55)/2,(L57-L56)/2,(L58-L57)/2,(L59-L58)/2,(L60-L59)/2
  148.     dc.w (L61-L60)/2,(L62-L61)/2,(L63-L62)/2,(L64-L63)/2,(L65-L64)/2,(L66-L65)/2
  149.     dc.w (L67-L66)/2,(L68-L67)/2,(L69-L68)/2,(L70-L69)/2,(L71-L70)/2,(L72-L71)/2
  150.     dc.w (L73-L72)/2,(L74-L73)/2,(L75-L74)/2,(L76-L75)/2,(L77-L76)/2,(L78-L77)/2
  151.     dc.w (L79-L78)/2,(L80-L79)/2,(L81-L80)/2,(L82-L81)/2
  152.  
  153.  
  154. ******************************************************************
  155. *    TOKEN TABLE
  156.  
  157. ; The next two lines needs to be unchanged...
  158. C_Tk:    dc.w     1,0
  159.     dc.b     $80,-1
  160.  
  161.  
  162. ; Now the real tokens...
  163.     dc.w    -1,L_OpenScreen24
  164.     dc.b    "ovopenscreen2","4"+$80,"00",-1
  165.     dc.w    L_CloseScreen24,-1
  166.     dc.b    "ovclosescreen2","4"+$80,"I",-1
  167.     dc.w    L_WritePixel24,-1
  168.     dc.b    "ovwritepixel2","4"+$80,"I0,0,0",-1
  169.     dc.w    L_ReadPixel24,-1
  170.     dc.b    "ovreadpixel2","4"+$80,"I0,0,0",-1
  171.     dc.w    L_ClearScreen24,-1
  172.     dc.b    "ovclearscreen2","4"+$80,"I0",-1
  173.     dc.w    L_ILBMtoOV,-1
  174.     dc.b    "ovilbmtoo","v"+$80,"I0,0,0,0,0,0",-1
  175.     dc.w    L_UpdateDelay24,-1
  176.     dc.b    "ovupdatedelay2","4"+$80,"I0",-1
  177.     dc.w    L_Refresh24,-1
  178.     dc.b    "ovrefresh2","4"+$80,"I",-1
  179.     dc.w    L_SetDisplayBottom24,-1
  180.     dc.b    "ovsetdisplaybottom2","4"+$80,"I0",-1
  181.     dc.w    L_ClearDisplayBottom24,-1
  182.     dc.b    "ovcleardisplaybottom2","4"+$80,"I",-1
  183.     dc.w    L_SetSprite24,-1
  184.     dc.b    "ovsetsprite2","4"+$80,"I0,0",-1
  185.     dc.w    L_AmigaPriority,-1
  186.     dc.b    "ovamigapriorit","y"+$80,"I",-1
  187.     dc.w    L_OVPriority,-1
  188.     dc.b    "ovpriorit","y"+$80,"I",-1
  189.     dc.w    L_DualDisplay24,-1
  190.     dc.b    "ovdualdisplay2","4"+$80,"I",-1
  191.     dc.w    L_SingleDisplay24,-1
  192.     dc.b    "ovsingledisplay2","4"+$80,"I",-1
  193.     dc.w    L_AppendCopper24,-1
  194.     dc.b    "ovappendcopper2","4"+$80,"I0",-1
  195.     dc.w    L_RectFill24,-1
  196.     dc.b    "ovrectfill2","4"+$80,"I0,0,0,0,0",-1
  197.     dc.w    L_UpdateCoPro24,-1
  198.     dc.b    "ovupdatecopro2","4"+$80,"I",-1
  199.     dc.w    L_SetControlBit24,-1
  200.     dc.b    "ovsetcontrolbit2","4"+$80,"I0,0,0",-1
  201.     dc.w    L_PaletteMap24,-1
  202.     dc.b    "ovpalettemap2","4"+$80,"I0",-1
  203.     dc.w    L_UpdatePalette24,-1
  204.     dc.b    "ovupdatepalette2","4"+$80,"I",-1
  205.     dc.w    L_Scroll24,-1
  206.     dc.b    "ovscroll2","4"+$80,"I0,0",-1
  207.     dc.w    -1,L_LoadIFF24
  208.     dc.b    "ovloadimage2","4"+$80,"00,2,0",-1
  209.     dc.w    L_SetScreen24,-1
  210.     dc.b    "ovsetscreen2","4"+$80,"I0",-1
  211.     dc.w    -1,L_SaveIFF24
  212.     dc.b    "ovsaveiff2","4"+$80,"00,2,0,0",-1
  213.     dc.w    -1,L_CreateScreen24
  214.     dc.b    "ovcreatescreen2","4"+$80,"00,0,0",-1
  215.     dc.w    L_FreeScreen24,-1
  216.     dc.b    "ovfreescreen2","4"+$80,"I0",-1
  217.     dc.w    L_UpdateRegs24,-1
  218.     dc.b    "ovupdateregs2","4"+$80,"I",-1
  219.     dc.w    L_SetLoadAddress24,-1
  220.     dc.b    "ovsetloadaddress2","4"+$80,"I",-1
  221.     dc.w    L_RGBtoOV,-1
  222.     dc.b    "ovrgbtoo","v"+$80,"I0,0,0,0,0,0",-1
  223.     dc.w    -1,L_ActiveScreen24
  224.     dc.b    "ovactivescreen2","4"+$80,"0",-1
  225.     dc.w    L_FadeIn24,-1
  226.     dc.b    "ovfadein2","4"+$80,"I0",-1
  227.     dc.w    L_FadeOut24,-1
  228.     dc.b    "ovfadeout2","4"+$80,"I0",-1
  229.     dc.w    L_ClearQuick24,-1
  230.     dc.b    "ovclearquick2","4"+$80,"I",-1
  231.     dc.w    -1,L_WriteThumbnail24
  232.     dc.b    "ovwritethumbnail2","4"+$80,"00,0",-1
  233.     dc.w    L_SetRGB24,-1
  234.     dc.b    "ovsetrgb2","4"+$80,"I0,0,0,0",-1
  235.     dc.w    L_DrawLine24,-1
  236.     dc.b    "ovdrawline2","4"+$80,"I0,0,0,0,0",-1
  237.     dc.w    L_StopUpdate24,-1
  238.     dc.b    "ovstopupdate2","4"+$80,"I",-1
  239.     dc.w    L_WritePFPixel24,-1
  240.     dc.b    "ovwritepfpixel2","4"+$80,"I0,0,0",-1
  241.     dc.w    L_WritePRPixel24,-1
  242.     dc.b    "ovwriteprpixel2","4"+$80,"I0,0,0",-1
  243.     dc.w    L_OVtoRGB,-1
  244.     dc.b    "ovtorg","b"+$80,"I0,0,0,0,0,0",-1
  245.     dc.w    L_OVtoILBM,-1
  246.     dc.b    "ovtoilb","m"+$80,"I0,0,0,0,0",-1
  247.     dc.w    L_UpdateAll24,-1
  248.     dc.b    "ovupdateall2","4"+$80,"I",-1
  249.     dc.w    L_UpdatePFStencil24,-1
  250.     dc.b    "ovupdatepfstencil2","4"+$80,"I",-1
  251.     dc.w    L_EnablePRStencil24,-1
  252.     dc.b    "ovenableprstencil2","4"+$80,"I",-1
  253.     dc.w    L_DisablePRStencil24,-1
  254.     dc.b    "ovdisableprstencil2","4"+$80,"I",-1
  255.     dc.w    L_ClearPRStencil24,-1
  256.     dc.b    "ovclearprstencil2","4"+$80,"I0",-1
  257.     dc.w    L_SetPRStencil24,-1
  258.     dc.b    "ovsetprstencil2","4"+$80,"I0",-1
  259.     dc.w    L_DisplayFrame24,-1
  260.     dc.b    "ovdisplayframe2","4"+$80,"I0",-1
  261.     dc.w    L_WriteFrame24,-1
  262.     dc.b    "ovwriteframe2","4"+$80,"I0",-1
  263.     dc.w    L_BitPlanetoOV,-1
  264.     dc.b    "ovbitplanetoo","v"+$80,"I0,0,0,0,0,0",-1
  265.     dc.w    L_SetCoPro24,-1
  266.     dc.b    "ovsetcopro2","4"+$80,"I0,0",-1
  267.     dc.w    L_RegWait24,-1
  268.     dc.b    "ovregwait2","4"+$80,"I",-1
  269.     dc.w    L_DualPlayField24,-1
  270.     dc.b    "ovdualplayfield2","4"+$80,"I",-1
  271.     dc.w    L_SinglePlayField24,-1
  272.     dc.b    "ovsingleplayfield2","4"+$80,"I",-1
  273.     dc.w    L_ClearPFStencil24,-1
  274.     dc.b    "ovclearpfstencil2","4"+$80,"I0",-1
  275.     dc.w    L_SetPFStencil24,-1
  276.     dc.b    "ovsetpfstencil2","4"+$80,"I0",-1
  277.     dc.w    L_ReadPRPixel24,-1
  278.     dc.b    "ovreadprpixel2","4"+$80,"I0,0,0",-1
  279.     dc.w    L_ReadPFPixel24,-1
  280.     dc.b    "ovreadpfpixel2","4"+$80,"I0,0,0",-1
  281.     dc.w    L_OVtoBitPlane,-1
  282.     dc.b    "ovtobitplan","e"+$80,"I0,0,0,0,0",-1
  283.     dc.w    L_FreezeFrame24,-1
  284.     dc.b    "ovfreezeframe2","4"+$80,"I0",-1
  285.     dc.w    -1,L_LowMemUpdate24
  286.     dc.b    "ovlowmemupdate2","4"+$80,"00,0",-1
  287.     dc.w    -1,L_DisplayThumbnail24
  288.     dc.b    "ovdisplaythumbnail2","4"+$80,"00,2,0,0",-1
  289.     dc.w    -1,L_Config24
  290.     dc.b    "ovconfig2","4"+$80,"0",-1
  291.     dc.w    L_AutoSync24,-1
  292.     dc.b    "ovautosync2","4"+$80,"I0",-1
  293.     dc.w    L_DrawEllipse24,-1
  294.     dc.b    "ovdrawellipse2","4"+$80,"I0,0,0,0,0",-1
  295.     dc.w    L_LatchDisplay24,-1
  296.     dc.b    "ovlatchdisplay2","4"+$80,"I0",-1
  297.     dc.w    L_SetHires24,-1
  298.     dc.b    "ovsethires2","4"+$80,"I0,0",-1
  299.     dc.w    L_SetLores24,-1
  300.     dc.b    "ovsetlores2","4"+$80,"I0,0",-1
  301.     dc.w    -1,L_DownLoadFrame24
  302.     dc.b    "ovdownloadframe2","4"+$80,"00,0,0,0,0",-1
  303.     dc.w    -1,L_SaveJPEG24
  304.     dc.b    "ovsavejpeg2","4"+$80,"00,2,0,0",-1
  305.     dc.w    -1,L_LowMem2Update24
  306.     dc.b    "ovlowmem2update2","4"+$80,"00,0",-1
  307.     dc.w    -1,L_LoadIFF24
  308.     dc.b    "ovloadiff2","4"+$80,"00,2,0",-1
  309.     dc.w    L_SetPen24,-1
  310.     dc.b    "ovsetpen2","4"+$80,"I0,0,0,0",-1
  311.     dc.w    -1,L_GetRed24
  312.     dc.b    "ovgetred2","4"+$80,"00",-1
  313.     dc.w    -1,L_GetGreen24
  314.     dc.b    "ovgetgreen2","4"+$80,"00",-1
  315.     dc.w    -1,L_GetBlue24
  316.     dc.b    "ovgetblue2","4"+$80,"00",-1
  317.     dc.w    -1,L_CopperRefresh
  318.     dc.b    "ovcopperrefres","h"+$80,"00",-1
  319.     dc.w     0
  320.  
  321.  
  322. C_Lib
  323. ******************************************************************
  324. *        COLD START
  325.  
  326. L0    movem.l    A3-A6,-(SP)
  327.     lea    OB(PC),A0
  328.     move.l    A0,ExtAdr+ExtNb*16(a5)
  329.     lea    OpalName(PC),A1
  330.     moveq    #0,D0
  331.     CALLEXEC OpenLibrary
  332.     lea    _OpalBase(PC),A0
  333.     move.l    D0,(A0)
  334.     movem.l    (SP)+,A3-A6
  335.     moveq    #ExtNb,D0        ;NO ERRORS
  336.     rts
  337.  
  338. ;    RDATA
  339.  
  340. *********************************************************************
  341. *        OpalVision extension data zone
  342. OB:
  343. _OpalBase:    dc.l    0
  344. OpalName:    OPALLIBNAME
  345.         even
  346. StringBuff:    ds.b    300
  347.         even
  348.  
  349. *********************************************************************
  350. L1
  351. L2
  352.  
  353. L_OpenScreen24        EQU    3
  354. L3
  355.     move.l    (A3)+,D5
  356.     lea    -$7fa(a5),A0
  357.     moveq    #1,D0
  358.     A_CALLOPAL AmosPatch24
  359.     move.l    D5,D0
  360.     A_CALLOPAL OpenScreen24
  361.     move.l    D0,A0
  362.     clr.b    OS_Pen_R(A0)
  363.     move.b    #$FF,OS_Pen_G(A0)
  364.     rts
  365.  
  366. L_CloseScreen24        EQU    4
  367. L4
  368.     A_CALLOPAL CloseScreen24
  369.     movem.l    D0-D3,-(SP)
  370.     lea    -$7fa(a5),A0
  371.     moveq    #0,D0
  372.     A_CALLOPAL AmosPatch24
  373.     movem.l    (SP)+,D0-D3
  374.     rts
  375.  
  376. L_WritePixel24        EQU    5
  377. L5
  378.     move.l    (A3)+,D1
  379.     move.l    (A3)+,D0
  380.     move.l    (A3)+,A0
  381.     A_CALLOPAL WritePixel24
  382.     rts
  383.  
  384. L_ReadPixel24        EQU    6
  385. L6
  386.     move.l    (A3)+,D1
  387.     move.l    (A3)+,D0
  388.     move.l    (A3)+,A0
  389.     A_CALLOPAL ReadPixel24
  390.     rts
  391.  
  392. L_ClearScreen24        EQU    7
  393. L7
  394.     move.l    (A3)+,A0
  395.     A_CALLOPAL ClearScreen24
  396.     rts
  397.  
  398. L_ILBMtoOV        EQU    8
  399. L8
  400.     move.l    (A3)+,D3
  401.     move.l    (A3)+,D2
  402.     move.l    (A3)+,D1
  403.     move.l    (A3)+,D0
  404.     move.l    (A3)+,A1
  405.     move.l    (A3)+,A0
  406.     A_CALLOPAL ILBMtoOV
  407.     rts
  408.  
  409. L_UpdateDelay24        EQU    9
  410. L9
  411.     move.l    (A3)+,D0
  412.     A_CALLOPAL UpdateDelay24
  413.     rts
  414.  
  415. L_Refresh24        EQU    10
  416. L10
  417.     A_CALLOPAL Refresh24
  418.     rts
  419.  
  420. L_SetDisplayBottom24    EQU    11
  421. L11
  422.     move.l    (A3)+,D0
  423.     A_CALLOPAL SetDisplayBottom24
  424.     rts
  425.  
  426. L_ClearDisplayBottom24    EQU    12
  427. L12
  428.     A_CALLOPAL ClearDisplayBottom24
  429.     rts
  430.  
  431. L_SetSprite24        EQU    13
  432. L13
  433.     move.l    (A3)+,D0
  434.     move.l    (A3)+,A0
  435.     A_CALLOPAL SetSprite24
  436.     rts
  437.  
  438. L_AmigaPriority        EQU    14
  439. L14
  440.     A_CALLOPAL AmigaPriority
  441.     rts
  442.  
  443. L_OVPriority        EQU    15
  444. L15
  445.     A_CALLOPAL OVPriority
  446.     rts
  447.  
  448. L_DualDisplay24        EQU    16
  449. L16
  450.     A_CALLOPAL DualDisplay24
  451.     rts
  452.  
  453. L_SingleDisplay24    EQU    17
  454. L17
  455.     A_CALLOPAL SingleDisplay24
  456.     rts
  457.  
  458. L_AppendCopper24    EQU    18
  459. L18
  460.     move.l    (A3)+,A0
  461.     A_CALLOPAL AppendCopper24
  462.     rts
  463.  
  464. L_RectFill24        EQU    19
  465. L19
  466.     move.l    (A3)+,D3
  467.     move.l    (A3)+,D2
  468.     move.l    (A3)+,D1
  469.     move.l    (A3)+,D0
  470.     move.l    (A3)+,A0
  471.     A_CALLOPAL RectFill24
  472.     rts
  473.  
  474. L_UpdateCoPro24        EQU    20
  475. L20
  476.     A_CALLOPAL UpdateCoPro24
  477.     rts
  478.  
  479. L_SetControlBit24    EQU    21
  480. L21
  481.     move.l    (A3)+,D2
  482.     move.l    (A3)+,D1
  483.     move.l    (A3)+,D0
  484.     A_CALLOPAL SetControlBit24
  485.     rts
  486.  
  487. L_PaletteMap24        EQU    22
  488. L22
  489.     move.l    (A3)+,D0
  490.     A_CALLOPAL PaletteMap24
  491.     rts
  492.  
  493. L_UpdatePalette24    EQU    23
  494. L23
  495.     A_CALLOPAL UpdatePalette24
  496.     rts
  497.  
  498. L_Scroll24        EQU    24
  499. L24
  500.     move.l    (A3)+,D1
  501.     move.l    (A3)+,D0
  502.     A_CALLOPAL Scroll24
  503.     rts
  504.  
  505. L_LoadIFF24        EQU    25
  506. L25
  507.     lea    -$7fa(a5),A0
  508.     moveq    #1,D0
  509.     A_CALLOPAL AmosPatch24
  510.  
  511.     move.l    (A3)+,D0    ;OpalScreen pointer.
  512.     move.l    (A3)+,A1    ;pointer to name.
  513.     move.w    (A1)+,D1    ;string (name) length.
  514.     subq    #1,D1
  515.  
  516.     move.l    ExtAdr+ExtNb*16(a5),A0
  517.     add.w    #StringBuff-OB,A0
  518. .lp:    move.b    (A1)+,(A0)+    ;copy string
  519.     dbra    D1,.lp
  520.     clr.b    (A0)        ;terminate string
  521.     move.l    ExtAdr+ExtNb*16(a5),A1
  522.     add.w    #StringBuff-OB,A1
  523.     move.l    (A3)+,A0
  524.     A_CALLOPAL LoadIFF24
  525.     rts
  526.  
  527. L_SetScreen24        EQU    26
  528. L26
  529.     move.l    (A3)+,A0
  530.     A_CALLOPAL SetScreen24
  531.     rts
  532.  
  533. L_SaveIFF24        EQU    27
  534. L27
  535.     move.l    (A3)+,D0    ;Flags
  536.     move.l    (A3)+,A2    ;ChunkFunc
  537.     move.l    (A3)+,A1    ;FileName
  538.     move.w    (A1)+,D1    ;string (name) length.
  539.     subq    #1,D1
  540.  
  541.     move.l    ExtAdr+ExtNb*16(a5),A0
  542.     add.w    #StringBuff-OB,A0
  543. .lp:    move.b    (A1)+,(A0)+    ;copy string
  544.     dbra    D1,.lp
  545.     clr.b    (A0)        ;terminate string
  546.     move.l    ExtAdr+ExtNb*16(a5),A1
  547.     add.w    #StringBuff-OB,A1
  548.     move.l    (A3)+,A0    ;screen
  549.     A_CALLOPAL SaveIFF24
  550.     rts
  551.  
  552. L_CreateScreen24    EQU    28
  553. L28
  554.     move.l    (A3)+,D2
  555.     move.l    (A3)+,D1
  556.     move.l    (A3)+,D0
  557.     A_CALLOPAL CreateScreen24
  558.     rts
  559.  
  560. L_FreeScreen24        EQU    29
  561. L29
  562.     move.l    (A3)+,A0
  563.     A_CALLOPAL FreeScreen24
  564.     rts
  565.  
  566. L_UpdateRegs24        EQU    30
  567. L30
  568.     A_CALLOPAL UpdateRegs24
  569.     rts
  570.  
  571. L_SetLoadAddress24    EQU    31
  572. L31
  573.     A_CALLOPAL SetLoadAddress24
  574.     rts
  575.  
  576. L_RGBtoOV        EQU    32
  577. L32
  578.     move.l    (A3)+,D3
  579.     move.l    (A3)+,D2
  580.     move.l    (A3)+,D1
  581.     move.l    (A3)+,D0
  582.     move.l    (A3)+,A1
  583.     move.l    (A3)+,A0
  584.     A_CALLOPAL RGBtoOV
  585.     rts
  586.  
  587. L_ActiveScreen24    EQU    33
  588. L33
  589.     A_CALLOPAL ActiveScreen24
  590.     rts
  591.  
  592. L_FadeIn24        EQU    34
  593. L34
  594.     move.l    (A3)+,D0
  595.     A_CALLOPAL FadeIn24
  596.     rts
  597.  
  598. L_FadeOut24        EQU    35
  599. L35
  600.     move.l    (A3)+,D0
  601.     A_CALLOPAL FadeOut24
  602.     rts
  603.  
  604. L_ClearQuick24        EQU    36
  605. L36
  606.     A_CALLOPAL ClearQuick24
  607.     rts
  608.  
  609. L_WriteThumbnail24    EQU    37
  610. L37
  611.     move.l    (A3)+,A1
  612.     move.l    (A3)+,A0
  613.     A_CALLOPAL WriteThumbnail24
  614.     rts
  615.  
  616. L_SetRGB24        EQU    38
  617. L38
  618.     move.l    (A3)+,D3
  619.     move.l    (A3)+,D2
  620.     move.l    (A3)+,D1
  621.     move.l    (A3)+,D0
  622.     A_CALLOPAL SetRGB24
  623.     rts
  624.  
  625. L_DrawLine24        EQU    39
  626. L39
  627.     move.l    (A3)+,D3
  628.     move.l    (A3)+,D2
  629.     move.l    (A3)+,D1
  630.     move.l    (A3)+,D0
  631.     move.l    (A3)+,A0
  632.     A_CALLOPAL DrawLine24
  633.     rts
  634.  
  635. L_StopUpdate24        EQU    40
  636. L40
  637.     A_CALLOPAL StopUpdate24
  638.     rts
  639.  
  640. L_WritePFPixel24    EQU    41
  641. L41
  642.     move.l    (A3)+,D1
  643.     move.l    (A3)+,D0
  644.     move.l    (A3)+,A0
  645.     A_CALLOPAL WritePFPixel24
  646.     rts
  647.  
  648. L_WritePRPixel24    EQU    42
  649. L42
  650.     move.l    (A3)+,D1
  651.     move.l    (A3)+,D0
  652.     move.l    (A3)+,A0
  653.     A_CALLOPAL WritePRPixel24
  654.     rts
  655.  
  656. L_OVtoRGB        EQU    43
  657. L43
  658.     move.l    (A3)+,D3
  659.     move.l    (A3)+,D2
  660.     move.l    (A3)+,D1
  661.     move.l    (A3)+,D0
  662.     move.l    (A3)+,A1
  663.     move.l    (A3)+,A0
  664.     A_CALLOPAL OVtoRGB
  665.     rts
  666.  
  667. L_OVtoILBM        EQU    44
  668. L44
  669.     move.l    (A3)+,D2
  670.     move.l    (A3)+,D1
  671.     move.l    (A3)+,D0
  672.     move.l    (A3)+,A1
  673.     move.l    (A3)+,A0
  674.     A_CALLOPAL OVtoILBM
  675.     rts
  676.  
  677. L_UpdateAll24        EQU    45
  678. L45
  679.     A_CALLOPAL UpdateAll24
  680.     rts
  681.  
  682. L_UpdatePFStencil24    EQU    46
  683. L46
  684.     A_CALLOPAL UpdatePFStencil24
  685.     rts
  686.  
  687.  
  688. L_EnablePRStencil24    EQU    47
  689. L47
  690.     A_CALLOPAL EnablePRStencil24
  691.     rts
  692.  
  693. L_DisablePRStencil24    EQU    48
  694. L48
  695.     A_CALLOPAL DisablePRStencil24
  696.     rts
  697.  
  698. L_ClearPRStencil24    EQU    49
  699. L49
  700.     move.l    (A3)+,A0
  701.     A_CALLOPAL ClearPRStencil24
  702.     rts
  703.  
  704. L_SetPRStencil24    EQU    50
  705. L50
  706.     move.l    (A3)+,A0
  707.     A_CALLOPAL SetPRStencil24
  708.     rts
  709.  
  710. L_DisplayFrame24    EQU    51
  711. L51
  712.     move.l    (A3)+,D0
  713.     A_CALLOPAL DisplayFrame24
  714.     rts
  715.  
  716. L_WriteFrame24        EQU    52
  717. L52
  718.     move.l    (A3)+,D0
  719.     A_CALLOPAL WriteFrame24
  720.     rts
  721.  
  722. L_BitPlanetoOV        EQU    53
  723. L53
  724.     move.l    (A3)+,D3
  725.     move.l    (A3)+,D2
  726.     move.l    (A3)+,D1
  727.     move.l    (A3)+,D0
  728.     move.l    (A3)+,A1
  729.     move.l    (A3)+,A0
  730.     A_CALLOPAL BitPlanetoOV
  731.     rts
  732.  
  733. L_SetCoPro24        EQU    54
  734. L54
  735.     move.l    (A3)+,D1
  736.     move.l    (A3)+,D0
  737.     A_CALLOPAL SetCoPro24
  738.     rts
  739.  
  740. L_RegWait24        EQU    55
  741. L55
  742.     A_CALLOPAL RegWait24
  743.     rts
  744.  
  745. L_DualPlayField24    EQU    56
  746. L56
  747.     A_CALLOPAL DualPlayField24
  748.     rts
  749.  
  750. L_SinglePlayField24    EQU    57
  751. L57
  752.     A_CALLOPAL SinglePlayField24
  753.     rts
  754.  
  755. L_ClearPFStencil24    EQU    58
  756. L58
  757.     move.l    (A3)+,A0
  758.     A_CALLOPAL ClearPFStencil24
  759.     rts
  760.  
  761. L_SetPFStencil24    EQU    59
  762. L59
  763.     move.l    (A3)+,A0
  764.     A_CALLOPAL SetPFStencil24
  765.     rts
  766.  
  767. L_ReadPRPixel24        EQU    60
  768. L60
  769.     move.l    (A3)+,D1
  770.     move.l    (A3)+,D0
  771.     move.l    (A3)+,A0
  772.     A_CALLOPAL ReadPRPixel24
  773.     rts
  774.  
  775. L_ReadPFPixel24        EQU    61
  776. L61
  777.     move.l    (A3)+,D1
  778.     move.l    (A3)+,D0
  779.     move.l    (A3)+,A0
  780.     A_CALLOPAL ReadPFPixel24
  781.     rts
  782.  
  783. L_OVtoBitPlane        EQU    62
  784. L62
  785.     move.l    (A3)+,D2
  786.     move.l    (A3)+,D1
  787.     move.l    (A3)+,D0
  788.     move.l    (A3)+,A1
  789.     move.l    (A3)+,A0
  790.     A_CALLOPAL OVtoBitPlane
  791.     rts
  792.  
  793. L_FreezeFrame24        EQU    63
  794. L63
  795.     move.l    (A3)+,D0
  796.     A_CALLOPAL FreezeFrame24
  797.     rts
  798.  
  799. L_LowMemUpdate24    EQU    64
  800. L64
  801.     lea    -$7fa(a5),A0
  802.     moveq    #1,D0
  803.     A_CALLOPAL AmosPatch24
  804.     move.l    (A3)+,D0
  805.     move.l    (A3)+,A0
  806.     A_CALLOPAL LowMemUpdate24
  807.     rts
  808.  
  809. L_DisplayThumbnail24    EQU    65
  810. L65
  811.     move.l    (A3)+,D1    ;Y coord
  812.     move.l    (A3)+,D0    ;X coord
  813.     move.l    (A3)+,A1    ;pointer to FileName.
  814.     move.w    (A1)+,D2    ;string (name) length.
  815.     subq    #1,D2
  816.     move.l    ExtAdr+ExtNb*16(a5),A0
  817.     add.w    #StringBuff-OB,A0
  818. .lp:    move.b    (A1)+,(A0)+    ;copy string
  819.     dbra    D2,.lp
  820.     clr.b    (A0)        ;terminate string
  821.     move.l    ExtAdr+ExtNb*16(a5),A1
  822.     add.w    #StringBuff-OB,A1
  823.     move.l    (A3)+,A0    ;screen
  824.     A_CALLOPAL DisplayThumbnail24
  825.     rts
  826.  
  827. L_Config24        EQU    66
  828. L66
  829.     A_CALLOPAL Config24
  830.     rts
  831.  
  832. L_AutoSync24        EQU    67
  833. L67
  834.     move.l    (A3)+,D0
  835.     A_CALLOPAL AutoSync24
  836.     rts
  837.  
  838. L_DrawEllipse24        EQU    68
  839. L68
  840.     move.l    (A3)+,D3
  841.     move.l    (A3)+,D2
  842.     move.l    (A3)+,D1
  843.     move.l    (A3)+,D0
  844.     move.l    (A3)+,A0
  845.     A_CALLOPAL DrawEllipse24
  846.     rts
  847.  
  848. L_LatchDisplay24    EQU    69
  849. L69
  850.     move.l    (A3)+,D0
  851.     A_CALLOPAL LatchDisplay24
  852.     rts
  853.  
  854. L_SetHires24        EQU    70
  855. L70
  856.     move.l    (A3)+,D1
  857.     move.l    (A3)+,D0
  858.     A_CALLOPAL SetHires24
  859.     rts
  860.  
  861. L_SetLores24        EQU    71
  862. L71
  863.     move.l    (A3)+,D1
  864.     move.l    (A3)+,D0
  865.     A_CALLOPAL SetLores24
  866.     rts
  867.  
  868. L_DownLoadFrame24    EQU    72
  869. L72
  870.     move.l    (A3)+,D3
  871.     move.l    (A3)+,D2
  872.     move.l    (A3)+,D1
  873.     move.l    (A3)+,D0
  874.     move.l    (A3)+,A0
  875.     A_CALLOPAL DownLoadFrame24
  876.     rts
  877.  
  878. L_SaveJPEG24        EQU    73
  879. L73
  880.     move.l    (A3)+,D1    ;Quality
  881.     move.l    (A3)+,D0    ;Flags
  882.     move.l    (A3)+,A1    ;Filename
  883.     move.w    (A1)+,D2    ;string (name) length.
  884.     subq    #1,D2
  885.     move.l    ExtAdr+ExtNb*16(a5),A0
  886.     add.w    #StringBuff-OB,A0
  887. .lp:    move.b    (A1)+,(A0)+    ;copy string
  888.     dbra    D2,.lp
  889.     clr.b    (A0)        ;terminate string
  890.     move.l    ExtAdr+ExtNb*16(a5),A1
  891.     add.w    #StringBuff-OB,A1
  892.     move.l    (A3)+,A0    ;Screen
  893.     A_CALLOPAL SaveJPEG24
  894.     rts
  895.  
  896. L_LowMem2Update24    EQU    74
  897. L74
  898.     lea    -$7fa(a5),A0
  899.     moveq    #1,D0
  900.     A_CALLOPAL AmosPatch24
  901.     move.l    (A3)+,D0
  902.     move.l    (A3)+,A0
  903.     A_CALLOPAL LowMem2Update24
  904.     rts
  905.  
  906. L_SetPen24        EQU    75
  907. L75    move.l    (A3)+,D2    ;Blue
  908.     move.l    (A3)+,D1    ;Green
  909.     move.l    (A3)+,D0    ;Red
  910.     move.l    (A3)+,A0    ;screen
  911.     move.b    D0,OS_Pen_R(A0)
  912.     move.b    D1,OS_Pen_G(A0)
  913.     move.b    D2,OS_Pen_B(A0)
  914.     rts
  915.  
  916. L_GetRed24        EQU    76
  917. L76    move.l    (A3)+,A0    ;Screen
  918.     moveq    #0,D3
  919.     move.b    OS_Red(A0),D3
  920.     moveq    #0,D2
  921.     rts
  922.  
  923. L_GetGreen24        EQU    77
  924. L77    move.l    (A3)+,A0    ;Screen
  925.     moveq    #0,D3
  926.     move.b    OS_Green(A0),D3
  927.     moveq    #0,D2
  928.     rts
  929.  
  930. L_GetBlue24        EQU    78
  931. L78    move.l    (A3)+,A0    ;Screen
  932.     moveq    #0,D3
  933.     move.b    OS_Blue(A0),D3
  934.     moveq    #0,D2
  935.     rts
  936.  
  937. L_CopperRefresh        EQU    79
  938. L79    lea    -$7fa(a5),A0
  939.     moveq    #1,D0
  940.     A_CALLOPAL AmosPatch24
  941.     rts
  942.  
  943. *********************************************************************
  944. *    ERROR MESSAGES...
  945. ;
  946. ; You know that the compiler have a -E1 option (with errors) and a 
  947. ; a -E0 (without errors). To achieve that, the compiler copies one of
  948. ; the two next routines, depending on the -E flag. If errors are to be
  949. ; copied along with the program, then the next next routine is used. If not,
  950. ; then the next one is copied.
  951. ; The compiler assumes that the two last routines in the library handles
  952. ; the errors: the previous last is WITH errors, the last is WITHOUT. So,
  953. ; remember:
  954. ;
  955. ; THESE ROUTINES MUST BE THE LAST ONES IN THE LIBRARY
  956. ;
  957. ; The AMOS interpretor always needs errors. So make all your custom errors
  958. ; calls point to the L_Custom routine, and everything will work fine...
  959. ;
  960. ******* "With messages" routine.
  961. ; The following routine is the one your program must call to output
  962. ; a extension error message. It will be used under interpretor and under
  963. ; compiled program with -E1
  964.  
  965. L_Custom    EQU    80
  966. L80    lea    ErrMess(pc),a0
  967.     moveq    #0,d1            * Can be trapped
  968.     moveq    #ExtNb,d2        * Number of extension
  969.     moveq    #0,d3            * IMPORTANT!!!
  970.     RJmp    L_ErrorExt        * Jump to routine...
  971. * Messages...
  972. ErrMess    dc.b    "Can't Open Opal.Library",0        *0
  973.     even
  974.  
  975. ******* "No errors" routine
  976. ; If you compile with -E0, the compiler will replace the previous
  977. ; routine by this one. This one just sets D3 to -1, and does not
  978. ; load messages in A0. Anyway, values in D1 and D2 must be valid.
  979. ;    
  980. ; THIS ROUTINE MUST BE THE LAST ONE IN THE LIBRARY!
  981. ;
  982.  
  983. L81    moveq    #0,d1
  984.     moveq    #ExtNb,d2
  985.     moveq    #-1,d3
  986.     RJmp    L_ErrorExt
  987.  
  988. ; Do not forget the last label to delimit the last library routine!
  989. L82
  990.  
  991. *********************************************************************
  992. ; Now the title of the extension. If you come from V1.23 note that
  993. ; the cursor is no more located on the screen, instead a CDOWN (31)
  994. ; control code is used...
  995.  
  996. ******* TITLE MESSAGE
  997. C_Title    dc.b    31,"OpalVision V1.1, ⌐1992 Opal Technology Pty Ltd.",0
  998.     even
  999.  
  1000. ******* END OF THE EXTENSION
  1001. C_End    dc.w    0
  1002.  
  1003.  
  1004.